#ifndef TEXTANNOTATION_H
#define TEXTANNOTATION_H

#include <QTextEdit>
#include <QTextEdit>
#include <QRect>
#include <QString>
#include <QPixmap>
#include <QWidget>
#include <QLabel>
#include "ScreenShotWidget_global.h"



///
/// \brief The TextAnnotation class
/// 这是一个文本标注类，主要是在截屏工具的文本标注工具时使用
/// 需要写以下内容：
/// 1.该文本标记的起始点和允许的宽高
/// 2.获得这个窗口键入的文本的所有字符串
/// 3.文本框属性
/// 4.动态调整宽高
/// 5.每次新建新的文本框之后旧的文本框就会被释放，不允许标记，并在pixmap上绘制对应文本方便回撤
class SCREENSHOTWIDGET_EXPORT TextAnnotation : public QTextEdit
{
public:
    TextAnnotation(QLabel *parent);

public:
    ///@brief 设置窗口理想位置的函数
    void SetIdealLocation(const QRect & rect);

    ///@brief 获得文本内容的函数
    QString GetTextContent()const;

    ///@brief 直接在传进来的pixmap上绘制文字的函数
    void DrawTextToPixmap( QPainter &painter);

    ///@brief 动态调整宽高的函数
    void AdjustRegion();


public slots:
    ///重写一下键盘事件当高度max时，阻止所有键盘事件除了回退和删除
    virtual void keyPressEvent(QKeyEvent *e) override;

public:
    ///@brief 一个rect记录文本框允许的空间区域范围
    QRect m_allowRegion;

    ///@brief 一个pen，颜色会随着选择的颜色改变，笔的大小不改变
    QPen m_curPen;

    ///@brief 一个bool 值，判断是否block键盘的键入信号做其他操作
    bool m_isInputBlocked;
};

#endif // TEXTANNOTATION_H
